#pragma once

#include "IXBaseObj.h"

enum XDropEffect
{
    XDE_None = 0,
    XDE_Copy = 1,
    XDE_Move = 2,
    XDE_Link = 4,
};

class ExportXSkinLib IXDropCallback
{
public:
    virtual ~IXDropCallback(){}

    virtual void        STDMETHODCALLTYPE   OnDragEnter(POINT* pt) = 0;

    virtual XDropEffect STDMETHODCALLTYPE   QueryEffect(POINT* pt) = 0;
    virtual BOOL        STDMETHODCALLTYPE   OnFileDropped(UINT uCount, HDROP hDrop) = 0;

    virtual void        STDMETHODCALLTYPE   OnDragLeave(POINT* pt) = 0;
};

class ExportXSkinLib IXDropListener : public IXBaseObj
{
    DEF_INTERFACE(IXDropListener, _T("{BDA237FB-0AB2-4ba0-B0A3-4B2EBB9D4240}"));
public:
    virtual ~IXDropListener(){};

    virtual HRESULT STDMETHODCALLTYPE   Enable(XWND xWnd, BOOL bEnable) = 0;

    virtual HRESULT STDMETHODCALLTYPE   RegisterCallback(IXDropCallback* pCallback) = 0;
    virtual HRESULT STDMETHODCALLTYPE   UnRegisterCallback() = 0;
};
